<?php

namespace ApiSdk\Kwaixiaodian\Servers;

use Exception;
use GuzzleHttp\Exception\GuzzleException;

class ProductService extends BaseService
{
    /**
     * Notes: 分页查询商家的商品列表信息，每页返回数最多为100，推荐值为20。
     * author: lfy
     * Date: 2021/11/19
     * Time: 15:10
     * @param string $kwaiItemId //快手商品id
     * @param string $relItemId //外部商品Id.如kwaiItemId未传，但relItemId传了，将会按照appkey+relItemId查询
     * @param int|null $itemStatus //商品状态。不传kwaiItemId和relItemId时才会生效 1-正常 目前接口只支持1-正常（商品状态1是指未删除的商品）
     * @param int|null $itemType //商品类型。不传kwaiItemId和relItemId时才会生效 1-自建商品 2闪电购商品
     * @param int|null $pageNumber //页码0 < 数值 < totalPage
     * @param int $pageSize
     * @return array|bool|void
     * @throws GuzzleException
     */
    public function getProductList(string $kwaiItemId='', string $relItemId='', int $itemStatus=null, int $itemType=null, int $pageNumber=null, int $pageSize = 100)
    {
        if (!empty($kwaiItemId)) $this->addApiParam('kwaiItemId', $kwaiItemId);
        if (!empty($relItemId)) $this->addApiParam('relItemId', $relItemId);
        if (!empty($itemStatus)) $this->addApiParam('itemStatus', $itemStatus);
        if (!empty($itemType)) $this->addApiParam('itemType', $itemType);
        if (!empty($pageNumber)) $this->addApiParam('pageNumber', $pageNumber);
        if (!empty($pageSize)) $this->addApiParam('pageSize', $pageSize);
        return $this->get('open.item.list.get');
    }

    /**
     * Notes: 根据商品id获取商家的商品详情，不返回已删除的商品
     * author: lfy
     * Date: 2021/11/20
     * Time: 9:49
     * @param $kwaiItemId //商品ID
     * @return array|bool|void
     * @throws GuzzleException
     */
    public function getProductItemDetail($kwaiItemId)
    {
        $this->addApiParam('kwaiItemId', $kwaiItemId);
        return $this->get('open.item.get');
    }

    /**
     * Notes: 根据商品id查询商家的商品sku列表全量信息
     * author: lfy
     * Date: 2021/11/20
     * Time: 9:53
     * @param $kwaiItemId //快手商品id
     * @param int|null $relSkuId 外部sku id
     * @param int $skuStatus 状态，1，正常(仅支持状态1)
     * @return array|bool|void
     * @throws GuzzleException
     */
    public function getItemSkuList($kwaiItemId, int $relSkuId=null, int $skuStatus=1)
    {
        $this->addApiParam('kwaiItemId', $kwaiItemId);
        if (!empty($relSkuId)) $this->addApiParam('relSkuId', $relSkuId);
        if (!empty($relSkuId)) $this->addApiParam('skuStatus', $skuStatus);
        return $this->get('open.item.sku.list.get');
    }

}
